package com.hrg.demo.controller;

import com.hrg.demo.entity.Result;
import com.hrg.demo.service.FileCleanupService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.io.File;

/**
 * @author shenzq
 */
@RequiredArgsConstructor
@RestController
@RequestMapping("/api/file-cleanup")
public class FileCleanupController {


    private final FileCleanupService fileCleanupService;

    /**
     * 手动触发清理
     */
    @PostMapping("/manual")
    public String manualCleanup() {
        fileCleanupService.manualCleanup();
        return "手动清理任务已触发";
    }

    /**
     * 获取目录统计
     */
    @GetMapping("/stats")
    public String getStats() {
        fileCleanupService.printDirectoryStats();
        return "统计信息已输出到日志";
    }

    /**
     * 测试文件删除条件
     */
    @GetMapping("/test-condition")
    public String testCondition(@RequestParam String filename) {
        // 这里可以添加测试逻辑
        return "测试接口 - 文件名: " + filename + ", 长度: " + filename.length();
    }


    /**
     * 根据 货位库存中存储的 图片路径+文件名称，删除对应的图片
     * @param filePath
     * @return
     */
    @PostMapping("/deleteImage")
    public Result<String> deleteImage(@RequestParam String filePath) {
        try {
            // 验证文件路径是否为空
            if (filePath == null || filePath.trim().isEmpty()) {
                return Result.error("文件路径不能为空");
            }
            // 创建文件对象
            File file = new File(filePath);
            // 检查文件是否存在
            if (!file.exists()) {
                return Result.error("文件不存在: " + filePath);
            }
            // 检查是否是文件（不是目录）
            if (!file.isFile()) {
                return Result.error("路径不是文件: " + filePath);
            }
            // 删除文件
            boolean isDeleted = file.delete();

            if (isDeleted) {
                return Result.success("文件删除成功: " + filePath);
            } else {
                return Result.error("文件删除失败: " + filePath);
            }
        } catch (SecurityException e) {
            return Result.error("没有权限删除文件: " + filePath);
        } catch (Exception e) {
            return Result.error("删除文件时发生错误: " + e.getMessage());
        }
    }
}
